A networking switch receives data packets from a number of ingress ports connected to the switch and forwards the data packets to one or more egress ports connected to the switch. The switch determines the egress port to which the data packets are forwarded dependent on a destination address and other fields included in the data packet.
Before being forwarded, the received data packet is queued in the switch. A data packet may be queued dependent on the ingress port at which it was received or the egress port at which it is to be transmitted. An input buffered switch queues a data packet dependent on the ingress port at which the data packet is received. An output buffered switch queues a data packet dependent on the egress port at which it is to be transmitted. An output buffered switch is non-blocking and there is no need to schedule a cross bar switch.
The speed at which data packets are received may be greater than the speed at which received data packets are transmitted from the switch. Thus, an input buffered switch monitors the number of data packets stored in the ingress port queue. Upon storing a predetermined congestion threshold number of data packets, back pressure is applied to the ingress port to reduce the number of data packets received by the ingress port.
In an Ethernet switch back pressure is applied using standard link level protocols. In a half duplex Ethernet implementation Ethernet back pressure link protocols include causing collisions using Carrier Sense Multiple Access with Collision Detect (“CSMA/CD”) and carrier extension by forwarding “idle” packets. In a full duplex Ethernet implementation, Ethernet back pressure link protocols include sending a special control packet such as pause frames; that is, returning a command to the source of the data packets requesting that the source not send any data packets for a number of time slots.
However, in an output buffered switch, the queuing of data packets is not dependent on the ingress port at which the data packet is received. Thus, in output buffered switches back pressure is either not implemented, or back pressure is applied to all ingress ports in the output buffered switch.
If back pressure is not implemented, data packets received at an ingress port for a congested egress port, are dropped if they can not be stored in the output queue for the egress port. If back pressure is applied to all ingress ports in the switch, one congested egress port in the switch stalls the receipt of data packets received at all ingress ports in the switch and thus reduces data throughput.